package wechat;

import models.base.BaseModel;

import javax.persistence.*;
import java.util.Date;

/**
 * token
 */
@Entity
@Table(name="web_user_token")
public class WebUserToken extends BaseModel {
    /**
     *  用户 webUserId
     */
    @ManyToOne
    @JoinColumn(name="web_user_id")
    public WebUser webUser ;

    /**
     * toke
     */
    @Column(name="token")
    public String token ;

    /**
     * 失效时间
     */
    @Column(name="expire_at")
    public Date expireAt ;



    /**
     * 查询user token
     *
     * @param userId
     * @return
     */
    public static WebUserToken findByUserId(String  userId){
        return WebUserToken.find("webUser.id = ?1",userId).first();
    }

    /**
     * 查询user token
     *
     * @param userId
     * @param token
     * @return
     */
    public static WebUserToken findByUserIdAndToken(String  userId ,String  token){
        return WebUserToken.find("webUser.id = ?1 and token = ?2",userId ,token).first();
    }

    /**
     * 根据token 查询
     * @param token
     * @return
     */
    public static WebUserToken checkByToken(String token){
        return WebUserToken.find("token = ?1" , token).first();
    }

    /**
     * 根据token 查询
     * @param token
     * @return
     */
    public static WebUser findByToken(String token){

        Date nowTime = new Date();

        WebUserToken webUserToken = WebUserToken.find("token = ?1 and expireAt > ?2" , token , nowTime).first();
        if(webUserToken == null) return  null ;

        return  webUserToken.webUser ;
    }



}
